﻿namespace Contoso.ActiveDirectory {

    #region Usings
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    #endregion

    /// <summary>
    /// Attributes Added by Exchange 2003:
    /// http://msdn.microsoft.com/en-us/library/aa564219%28v=exchg.80%29.aspx
    /// </summary>
    public interface IExchangeDistributionListAttributes {

        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/ms978778%28v=exchg.65%29.aspx
        /// The users who are allowed to send mail to this recipient.
        /// </summary>
        IReadOnlyList<string> AuthOrig { get; }

        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/ms955165%28v=exchg.65%29.aspx
        /// A distribution list (DL) whose members may not send to this recipient or send messages over this connector. 
        /// </summary>
        IReadOnlyList<string> DLMemRejectPerms { get; }

        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/ms955176(v=exchg.65).aspx
        /// A distribution list (DL) whose members may send to this recipient or send messages over this connector. 
        /// </summary>
        IReadOnlyList<string> DLMemSubmitPerms { get; }

        /// <summary>
        /// A multi-valued attribute to specify the user account principal distinguished names that may manage the group.
        /// In Exchange 2010, distribution groups cannot be managed by groups; only individual users can manage groups. 
        /// This behavior differs from Microsoft Exchange Server 2003, in which you use groups to manage a distribution group.
        /// In Exchange 2003, group ownership is handled at a different level. 
        /// If you move mailboxes from Exchange 2003 to Exchange 2010, members of a group that managed a distribution group 
        /// in Exchange 2003 can no longer modify the group in Exchange 2010.
        /// </summary>
        IReadOnlyList<string> MSExchCoManagedByLink { get; }

        /// <summary>
        /// If set, specifies the legacyExchangeDN of the designated server where the distribution list will be expanded
        /// </summary>
        string MSExchExpansionServerName { get; }

        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/ms986045%28v=exchg.65%29.aspx
        /// When enabled for a distribution list (DL), unauthenticated users are rejected.
        /// </summary>
        IReadOnlyList<string> MSExchRequireAuthToSendTo { get; }

        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/ms869090(v=exchg.65).aspx
        /// Contains objects that may not send to this recipient.
        /// </summary>
        IReadOnlyList<string> UnAuthOrig { get; }
    }
}
